package com.ds.infra.ibatis.handler;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 作用：解析SQL语句中的参数占位符，并将其替换为问号（?）
 *
 * @author WeiShaoying
 */
public class ParameterTokenParser {

    private static final Pattern PARAM_PATTERN = Pattern.compile("#\\{(\\w+)}");

    // 解析SQL语句中的参数占位符，并返回其名称列表
    public static List<String> parseParameterNames(String sql) {
        List<String> names = new ArrayList<>();
        Matcher matcher = PARAM_PATTERN.matcher(sql);
        while (matcher.find()) {
            names.add(matcher.group(1));
        }
        return names;
    }

    public static String replacePlaceholders(String sql) {
        return sql.replaceAll("#\\{\\w+}", "?");
    }
}
